package controlleur;

import java.util.List;

import modele.CarteEvenement;
import modele.CaseMatiere;
import modele.Famille;
import modele.Joueur;
import modele.Niveau;
import modele.Theme;

public interface Controlleur {
	

	public abstract void donnerTourJeu(int compteNbTour);

	public void donnerJoueurSuivant(String nomJoueur);

	public abstract void donnerResultatDe(int resultatDe1, int resultatDe2);

	public abstract void donnerAFaitDouble();

	public abstract void donnerAPasFaitDouble();

	public abstract void sortirAnomalieSansDouble();

	public abstract String proposerEchange();

	public abstract void aucunEchangePossible();

	public abstract int contrepartieEchange(List<CaseMatiere> listeMatierePossede);

	public abstract int donneMatiereAdversaire(List<CaseMatiere> matieresAdversaires);

	public abstract String confirmerEchange(Joueur joueur,
			CaseMatiere caseVoulu, CaseMatiere caseProposee);

	public abstract void donnerInformationJoueur(Joueur j);

	public abstract void donnerCarteEvenement(CarteEvenement carteEvenement);

	public abstract void passeParCaseNouveauMois();

	public abstract void passeParPannePc();

	public abstract void passeParPanneEau();

	public abstract void passeParFauteGrave();

	public abstract String prendreConge();

	public abstract void demandeCongeAcceptee();

	public abstract int deplacementConge();

	public abstract void depasserQuota();

	public abstract void gainConge();

	public abstract void allerEnAnomalie();

	public abstract void donnerLoyerCase(CaseMatiere caseMatiere);

	public abstract String achatCaseLibre(CaseMatiere caseMatiere);

	public abstract void informerDeLachat();

	public abstract void achatAccepte(CaseMatiere caseMatiere);

	public abstract void achatRefuse();

	public abstract void tenterAugmenterNiveau(CaseMatiere caseMatiere);

	public abstract void passerNiveauSuperieur(Famille theme, Niveau niveau);

	public abstract void echecPasserNiveau();

	public abstract void donneThemeComplet(Famille theme);

	public abstract void reussirMissionEntreprise();

	public abstract void echecMission();

	public abstract void donnerMission(String question);

	public abstract int donneReponsePossible(List<String> reponsesPossibles);

	public abstract void echangeAccepte();

	public abstract void echangeRefuse();

	public abstract void donneListeMatieres(List<CaseMatiere> listeMatierePossede);

	public abstract void caseHorsListe();

	public abstract void perdreTheme(Theme theme);

	public abstract void quiAGagner(Joueur j);

	public abstract void quiAPerdu(Joueur j);

	public abstract void donnerInventaire(Joueur joueur);

}
